package com.example.librarymanagementproject2.mapper;

import com.example.librarymanagementproject2.model.entity.BorrowRecord;
import com.example.librarymanagementproject2.model.entity.User;

import java.util.List;

/**
 * @ClassName UserMapper
 * @Description TODO
 * @Author Kx
 * @Date 2025/9/28 20:23
 * @Version 1.0
 */
public interface UserMapper {
    /**
     * @author: kx
     * @date: 2025/9/28 20:38
     * @return java.util.List<org.example.model.entity.User>
     * @description: 查询所有用户信息
    */
    List<User> getAllUsers();

    /**
     * @author: kx
     * @date: 2025/9/29 11:30
     * @param id : 用户ID
     * @return org.example.model.entity.User
     * @description: 根据用户ID查询用户信息
     */
    User getUserById(Long id);

    /**
     * @author: kx
     * @date: 2025/10/14 19:19
     * @param userId : 用户ID
     * @return org.example.model.entity.BorrowRecord
     * @description: 根据用户ID查询该用户的借阅记录
    */
    List<BorrowRecord> getBorrowRecordsByUserId(Long userId);

    /**
     * @author: kx
     * @date: 2025/10/27 16:02
     * @param userName : 用户名
     * @return com.example.librarymanagementproject2.model.entity.User
     * @description: 根据账号查询用户信息
    */
    User getUserByUserName(String userName);

    /**
     * @author: kx
     * @date: 2025/10/14 20:10
     * @param id : 用户ID
     * @param newPassword : 新密码
     * @description: 修改密码
    */
    void updatePassword(Long id, String newPassword);

    /**
     * @author: kx
     * @date: 2025/10/15 16:22
     * @param email : 邮箱
     * @return org.example.model.entity.User
     * @description: 根据邮箱查询该改邮箱是否已被注册
    */
    User existsByEmail(String email);

    /**
     * @author: kx
     * @date: 2025/10/27 9:53
     * @param id : 用户ID
     * @param newAvatar : 新头像
     * @description: 修改用户的头像
    */
    void updateAvatar(Long id, String newAvatar);

    /**
     * @author: kx
     * @date: 2025/10/27 10:07
     * @param id : 用户ID
     * @description: 注销账号
    */
    void cancelAccount(Long id);
}
